package com.ship.common.core.utils;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.TimeUnit;

/**
 * @author tangshixuan
 * @date 2023-9-8
 */
public class DateUtil {

    /**
     * date转字符串格式化
     * @param date
     * @param format
     * @return
     */
    public static String date2Str(Date date,String format){
       return new SimpleDateFormat(format).format(date);
    }

    /**
     * 时间字符串转date
     * @param dateStr
     * @param format
     * @return
     */
    public static Date String2Date(String dateStr,String format){
        SimpleDateFormat dateFormat = new SimpleDateFormat(format);
        try {
            return dateFormat.parse(dateStr);
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 计算两个时间之间相差的
     * @param date1
     * @param date2
     * @param type 1：天，2：时，3：分，4：秒
     * @return
     */
    public static Long getDateDays(Date date1, Date date2, Integer type){
        // 计算日期之间的毫秒差值
        long milliseconds = date2.getTime() - date1.getTime();
        if(type.intValue() == 1){
            return TimeUnit.MILLISECONDS.toDays(milliseconds);
        }
        if(type.intValue() == 2){
            return TimeUnit.MILLISECONDS.toHours(milliseconds);
        }
        if(type.intValue() == 3){
            return TimeUnit.MILLISECONDS.toMinutes(milliseconds);
        }
        if(type.intValue() == 4){
            return TimeUnit.MILLISECONDS.toSeconds(milliseconds);
        }
        return milliseconds;
    }

    /**
     * 根据时间获取一年内的周数
     * @param date
     * @return
     */
    public static int getWeekOfYear(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.WEEK_OF_YEAR);
    }
}
